package com.lh.nk;

import java.util.Arrays;

/**
 * @author: linghao
 * @since: 2023/1/28
 *
 * 描述
 * 给定一个长度为 n 的数组，请你编写一个函数，返回该数组按升序排序后的结果。
 */
public class 排序NC140 {

        public static void main(String[] args) {
            int[] nums={11,24,5,32,50,34,54,76};
            System.out.println("快速排序前:"+ Arrays.toString(nums));
            quickSort(nums,0,nums.length-1);
            System.out.println("快速排序后:"+ Arrays.toString(nums));
        }

        //快排
        public static void quickSort(int[] nums, int start, int end){
            if(start>end) return;
            int i,j,base;
            i=start;
            j=end;
            base=nums[start];
            while (i<j){
                while (i<j && nums[j]>=base) j--;
                while (i<j && nums[i]<=base) i++;
                if(i<j){
                    swap(nums,i,j);
                }
            }
            swap(nums,start,i);
            quickSort(nums,start,j-1);
            quickSort(nums,j+1,end);
        }
        public static void swap(int[] nums,int left,int right){
            int temp=nums[left];
            nums[left]=nums[right];
            nums[right]=temp;
        }


}
